package com.zsc.edu.testrecyclerview;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.Toast;

import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.List;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

class RecyclerViewAdapter extends RecyclerView.Adapter<MyItemViewHolder>{

    List<MyItemNet> mMyItemNetList;

    public void setContext(Context context) {
        mContext = context;
    }

    Context mContext;

    public RecyclerViewAdapter(List<MyItemNet> myItemNetList) {
        mMyItemNetList = myItemNetList;
    }

    @NonNull
    @Override
    public MyItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

        // 单项的布局的资源id, 将其 inflate 出来
        View view = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.item, parent, false);

        // 构造 MyItemViewHolder
        final MyItemViewHolder myItemViewHolder = new MyItemViewHolder(view);


        // 点击 新闻大图
        myItemViewHolder.iv_img.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 当前click的位置
                int position = myItemViewHolder.getAdapterPosition();
                // 获得数据
                MyItemNet myItemNet = mMyItemNetList.get(position);
                // Toast 新闻内容
                Toast.makeText(v.getContext(), myItemNet.getNews(),
                        Toast.LENGTH_SHORT).show();
            }
        });

        // 点击 热度小图片
        myItemViewHolder.iv_hot.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 当前click的位置
                int position = myItemViewHolder.getAdapterPosition();
                MyItemNet myItemNet = mMyItemNetList.get(position);
                // 每click一次，hot 加1
                // 仅仅改变数据
                myItemNet.setHot(myItemNet.getHot() + 1);
                // 发出通知，让UI更新
                notifyDataSetChanged();
            }
        });


        return myItemViewHolder;
    }

    @Override
    public void onBindViewHolder(@NonNull MyItemViewHolder holder, int position) {
        // 获得当前位置的数据
        MyItemNet myItem = mMyItemNetList.get(position);

        // 新闻文本内容
        holder.tv_news.setText(myItem.getNews());
        // 热度小图片
        holder.iv_hot.setImageResource(myItem.getHot_img());
        // 分享小图片
        holder.iv_share.setImageResource(myItem.getShare_img());
        // 新闻大图片
        //holder.iv_img.setImageResource(myItem.getImg());
        // 热度值
        holder.tv_hot.setText(""+myItem.getHot()); // 把int转成string
        // 分享数量
        holder.tv_share.setText(""+myItem.getShare()); // 把int转成string

        // 初始化 子线程
        Thread thread = new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    // url
                    //URL url = new URL("https://www.zsc.edu.cn");
                    //URL url = new URL("http://yeyunxiaopan.xyz/api/" + myItem.getImg());
                    URL url = new URL("http://172.16.56.250:8000/api/" + myItem.getImg());


                    // url 连接
                    HttpURLConnection connection = (HttpURLConnection)url.openConnection();
                    // 请求方法，如果上传可用 POST
                    connection.setRequestMethod("GET");
                    // 连接超时
                    connection.setConnectTimeout(3000);
                    // 读取超时
                    connection.setReadTimeout(3000);
                    // 获得输入流
                    InputStream inputStream = connection.getInputStream();

                    // 输入流 转 位图 Bitmap
                    Bitmap bitmap = BitmapFactory.decodeStream(inputStream);



                    // 回到UI主线程
                    ((MainActivity)mContext).runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            // 只有UI主线程能够操作，由UI主线程创建的 ImageView
                            holder.iv_img.setImageBitmap(bitmap);
                        }
                    });



                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        });
        // 启动子线程
        thread.start();
    }

    @Override
    public int getItemCount() {
        return mMyItemNetList.size();
    }
}
